/*
  带权并查集
  题目描述
    有一个含有 n 个整数的数组 a1, a2, ... , an，但你并不知道其中每个数的值。
    现在给出 m 次操作，每次操作属于以下两种之一：
      1 i j k
        表示给出一个约束等式 ai − aj = k，如果不矛盾则等式成立并输出 "yes"，否则忽略这个等式并输出 "no"。
      2 i j
        如果基于之前的约束等式无法确定 ai − aj 的值则输出 "unknown"，否则输出一个整数表示 ai − aj 的值。
  输入描述
    第一行有 2 个整数 n,m，表示数组 a 的元素个数和操作次数。
    接下来 m 行，每行表示一个操作，形如 1 i j k 或 2 i j。
  输出描述
    对于每次操作，按照题目描述中的要求，输出一行表示答案。
  样例1
    输入
      4 8
      1 2 1 1
      1 1 3 3
      2 1 4
      2 2 3
      1 2 3 -4
      1 2 3 4
      1 3 4 -5
      2 4 2
    输出
      yes
      yes
      unknown
      4
      no
      yes
      yes
      1
  提示
    进行前两次操作后，没有出现矛盾，输出 "yes"，此时数组 a 可能是 [3,4,0,1]，也可能是 [0,1,−3,9]。
    显然第 3 次操作时无法确定 a1 − a4 的值。
    但第4 次操作时可以确定 a2 − a3 = 4。
    第 5 次操作与之前的约束条件相矛盾，因此忽略。
    第 6 次和第 7 次操作均没有出现矛盾，输出 "yes"，此时数组 a 可能是 [3,4,0,5]，也可能是 [0,1,−3,2]。
    第 8 次操作时可以确定 a4 − a2 = 1。

    [数据取值范围]
      对于 100% 的数据:
        2 ≤ n ≤ 10^4，
        1 ≤ m ≤ 10^5，
        1 ≤ i, j ≤ n，
        −10^5 ≤ k ≤ 10^5。
*/